const 和 static

    Rust 有一个用const关键字定义常量的方法:

    let绑定不同,你必须标注一个const的类型。

    常量贯穿于整个程序的生命周期。更具体的,Rust 中的常量并没有固定的内存地址。这是因为实际上它们会被内联到用到它们的地方。为此对同一常量的引用并不能保证引用到相同的内存地址。

    这是一个例子:

    与绑定不同,你必须标注一个static的类型。

    静态量贯穿于整个程序的生命周期,因此任何存储在常量中的引用有一个生命周期

    因为这是可变的,一个线程可能在更新N同时另一个在读取它,导致内存不安全。因此访问和改变一个static mut是的,因此必须在unsafe块中操作:

    更进一步,任何存储在的类型必须实现Sync

    conststatic都要求赋予它们一个值。它们必须只能被赋予一个常量表达式的值。换句话说,你不能用一个函数调用的返回值或任何相似的复合值或在运行时赋值。

    一个常量可以看作一个 C 中的#define:它有元数据开销但无运行时开销。“我应该在 C 中用一个 #define 还是一个 static 呢?”大体上与在 Rust 你应该用常量还是静态量是一个问题。